package com.mach.platform.service;

import com.mach.platform.domain.base.Account;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.io.InputStream;
import java.util.Map;


/**
  * @Name 用户接口类
  * @Description: 用户接口类
  * @author Administrator
  * @date  2018/4/23 0023   12:17
  */
public interface AccountService extends BaseService<Account>{

	/**
	 * 上传文件
	 * @param inputStream 文件流
	 * @return Integer
	 */
	Integer uploadXlsFile (InputStream inputStream);

	/**
	 * 修改密码
	 * @param id  用户id
	 * @param newPassword  新密码
	 * @return  数据库影响数
	 */
	Integer changePassword (Long id, String newPassword);

	/**
	 * 修改密码前 对比密码
	 * @param id
	 * @param inputPassword
	 * @return
	 */
	boolean comparePassword (Long id, String inputPassword);

	/**
	 * 移除当前岗位中的 用户关联
	 *
	 * @param ids 用户Id的数组
	 * @param type 清空的类型  0 为部门，1 为 岗位
	 * @return 影响数
	 */
	Integer removeOrgOrPostInfo (Long[] ids,Integer type);

	/**
	 *  查找 对应角色id的 对用用户数据
	 * @param pageable  分页数据
	 * @param searchParam  查询类容
	 * @param roleId  角色Id
	 * @return Page<Map>
	 */
	Page<Map> loadUserByRoleIdIn (Pageable pageable, String searchParam,Long roleId);

	/**
	 *  获取角色没有 关联的用户 数据
	 * @param pageable  分页数据
	 * @param searchParam  查询类容
	 * @param roleId  角色Id
	 * @return Page<Map>
	 */
	Page<Map> loadUserByRoleIdOut (Pageable pageable, String searchParam,Long roleId);

	/**
	 *
	 * @param pageable  分页数据
	 * @param roleName  角色名称
	 * @return Page<Map>
	 */
	Page<Map> getAccountByRoleName(Pageable pageable, String roleName);
}
